package com.fjwt.gz.db.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.fjwt.gz.core.model.BaseModel;

import java.sql.Time;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 营销活动配置表
 * </p>
 *
 * @author shiyonghao
 * @since 2025-04-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("t_a_activity_setting")
public class ActivitySettingEntity extends BaseModel {

    public static LambdaQueryWrapper<ActivitySettingEntity> gw(){
        return new LambdaQueryWrapper<>();
    }

    /**
     * 活动设置ID
     */
    @TableId(value = "activity_setting_id", type = IdType.AUTO)
    private Long activitySettingId;

    /**
     * 营销活动id
     */
    private Long activityId;

    /**
     * 积分奖励(0代表不奖励)
     */
    private Integer firstJoinScore;

    /**
     * 每次参与奖励积分
     */
    private Integer everyJoinScore;

    /**
     * 中奖概率类型： 0按比例中奖 ，1顺延中奖，2百分百中奖
     */
    private Integer awardType;

    /**
     * 是否开启黑名单： 0不开启 1开启（0默认不开启）
     */
    private Integer hasBlacklist;

    /**
     * 是否开启白名单： 0不开启 1开启（0默认不开启）
     */
    private Integer hasWhitelist;

    /**
     * 积分过期规则类型：0 n天后过期，1 指定时间过期  2次季度首月月底失效 
     */
    private Integer overType;

    /**
     * 积分自领取后多少天过期
     */
    private Integer overDays;

    /**
     * 过期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date overTime;

    /**
     * 同一用户可参与总次数（0代表不限制）
     */
    private Integer onlyOneTimes;

    /**
     * 同一用户周期性次数限制参与(0不限制， 1限每日，2限每周，3限每月)
     */
    private Integer periodType;

    /**
     * 同一用户周期性限制次数（period_type != 0时有效）
     */
    private Integer periodTimes;

    /**
     * 特殊参与限制(0不限制， 1每周几可以参与，2特殊日期可以参与)
     */
    private Integer specialType;

    /**
     * 特殊参与限制，多选，以逗号进行分隔(special_type!= 0时有效; special_type=1时，为数字1~5；special_type=2时，为具体日期)
     */
    private String specialContent;

    /**
     * 参与时间段限制（0不限制 1限制）
     */
    private Integer timeType;

    /**
     * 参与时间段限制，每天开始时间
     */
    private Time timeStart;

    /**
     * 参与时间段限制，每天结束时间
     */
    private Time timeEnd;

    /**
     * 参与门槛限制（0不限制，1限制）
     */
    private Integer thresholdType;

    /**
     * 参与门槛限制,前多少次免费
     */
    private Integer thresholdFreeTimes;

    /**
     * 参与门槛限制,后续需消耗多少积分可参与
     */
    private Integer thresholdJoinScore;

    /**
     * 参与活动，用户是否需要关注公众号（0：否 1：是）
     */
    private Integer isFollowOfficial;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;


}
